home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / internet / irc_i_dodatki / eggdrop / eggdrop11.lha / scripts / gainops1.tcl < prev    next >
Text File  |  1997-01-15  |  3KB  |  109 lines

  1. # gainops1.tcl - sends and handles requests for ops 
  2. # to or from other tandem bots on the same channel.
  3. # If installed on all bots on the channel, this makes
  4. # the perfect "need-op" package.  Added security features
  5. # require that all bots have valid nick!user@host records
  6. # for the other bots on the channel in order for this
  7. # script to work.
  8. # 29 January 1996 by Gord-@saFyre (ggold@panix.com)
  9. # Modified 10 February 1996 by Gord- to send private
  10. # notice requesting ops from current ops on channel if
  11. # no bots are currently opped.
  12. #
  13. # Modified 1 March 1996 for eggdrop v1.0 bots! 
  14. #    security patch, 1 june 1996 (cmwagner)
  15. # Version 0.9 bots should use the modified gainops.tcl
  16. # script package, not gainops1.tcl
  17.  
  18. # The last three lines of this file causes the script to
  19. # be properly set for every channel your bot is set up to
  20. # join in its config file.
  21.  
  22. # This procedure logs the response of the op request
  23. # from each connected, opped tandem bot on the channel
  24.  
  25. bind bot - opresp bot_op_response
  26. proc bot_op_response {bot cmd response } { 
  27.   putlog "$bot: $response"
  28.   return 0
  29. }
  30.  
  31. # This procedure handles the incoming op request from
  32. # a connected tandem bot
  33.  
  34. bind bot - opreq bot_op_request
  35. proc bot_op_request {bot cmd arg} {
  36.   global botnick
  37.   set opnick [lindex $arg 0]
  38.   set channel [lindex $arg 1]
  39.   if {$bot == $botnick} {
  40.     return 0
  41.   }
  42.   if {![botisop $channel]} {
  43.     putbot $bot "opresp I am not an op on $channel."
  44.     return 0
  45.   }
  46.   if {[isop $opnick $channel]} {
  47.     putbot $bot "opresp $opnick is already an op on $channel."
  48.     return 0
  49.   }
  50.   if {![onchan $opnick $channel]} {
  51.     putbot $bot "opresp $opnick is not on $channel."
  52.     return 0
  53.   }
  54.   if {[onchansplit $opnick $channel]} {
  55.     putbot $bot "opresp $opnick is split away from $channel."
  56.     return 0
  57.   }
  58.  
  59.   set uhost [getchanhost $opnick $channel]
  60.   set hand [finduser ${opnick}!${uhost}]
  61.   if {![matchattr $hand ob]} {
  62.     putbot $bot "opresp $opnick is not +o or +b on my userlist."
  63.     return 0
  64.   }
  65.  
  66.   putcmdlog "$bot: OP $opnick $channel"
  67.   putserv "MODE $channel +o $opnick"
  68.   return 0
  69. }
  70.  
  71. # This is the procedure that should be called in
  72. # the need-op section of your bot's config file to 
  73. # have it request ops from the other tandem bots on
  74. # its channel. If there are no linked, opped bots
  75. # on the channel, then it begs (via private notice)
  76. # the current channel ops for ops.  If there are no
  77. # ops on the channel, it asks everyone to leave so
  78. # it can re-gain ops.
  79.  
  80. proc gain-ops {channel} {
  81.   global botnick
  82.   set botops 0
  83.   foreach bot [chanlist $channel b] {
  84.     if {(![onchansplit $bot $channel]) && [isop $bot $channel] && ([string first [string tolower [nick2hand $bot $channel]] [string tolower [bots]]] != -1)} {
  85.       set botops 1
  86.       putbot [nick2hand $bot $channel] "opreq $botnick $channel"
  87.     }
  88.   }
  89.   if {$botops} {return 0}
  90.   set chanops ""
  91.   foreach user [chanlist $channel] {
  92.     if {(![onchansplit $user $channel]) && [isop $user $channel]} {
  93.       append chanops $user ","
  94.     }
  95.   }
  96.   set chanops [string trim $chanops ","]
  97.   if {[string length $chanops]} {
  98.     putserv "NOTICE $chanops :Please op the bot. Thank-you."
  99.   } else {
  100.     putserv "NOTICE $channel :No channel ops?!?  Please leave the channel so we can re-gain ops. Thank-you."
  101.   }
  102. }
  103.  
  104. # This sets the script to work for every channel defined
  105. # in your bot's config file
  106. foreach channel [channels] {
  107.   channel set $channel need-op "gain-ops $channel"
  108. }
  109.